import Vue from "vue";
import Vuex from "vuex";
import { postLogin } from "@/api";
import { Toast } from "vant";

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    user: localStorage.user ? JSON.parse(localStorage.user) : {},
  },
  mutations: {
    setUser(state, payload) {
      state.user = payload;
    },
  },
  actions: {
    async login(context, payload) {
      /*
        登录成功之后, 我们返回用户的数据, 进行修改用户信息
        当我们登录成功之后, 我们就保存登录的凭证
        token: 我们可以通过token来进行访问
        access-token: 就是登录凭证, 他有有效期, 比如一个小时
        refresh-token: 当access-token失效的时候, 使用refresh-token来获取access-token,
       我们就可以使用新的token来进行登录, 如果refresh-token都失效了, 就必须重新登录
      */
      let result = await postLogin(payload);
      if (result.msg === "操作成功") {
        Toast.success("登录成功");
        context.commit("setUser", result.result);
        // 存到本地存储里面
        localStorage.user = JSON.stringify(result.result);
      } else {
        Toast({
          icon: "./imgs/fail.png",
          message: result.result,
        });
      }
      return result;
    },
  },
  modules: {},
});
